Subject: GK

Envivo Bio, Inc.; Confidential

logo

1.1 Overview of microbial community composition

Figure 1 is an interactive figure showing the microbial community composition in each collected sample. Here, each color and shade corresponds to a different genus. For reference, domestic dogs (Canis familiaris) and gray wolves (Canis lupus) are different species that belong to the same genus (Canis).

You can interact with this figure by:

Figure 1: Microbial community composition of collected saliva and CapScan samples. CapScan samples are ordered from proximal to distal intestine (i.e., increasing distance from mouth). Taxonomic composition is reported at the genus rank. Genera present at <1% relative abundance across all samples are reported as “Other genera”. Note: Blue = Firmicutes; Yellow = Actinomycetes; Green = Bacteroidetes; Red = Proteobacteria; Purple = all other phyla. Shades of the same color (except purple) correspond to different genera from the same phylum.



1.2 High-resolution snapshot of community composition

Figure 2 is an interactive figure showing the microbial community composition at higher taxononomic resolution. Here, each row corresponds to a unique microbe.

You can interact with this figure by:



Figure 2: Heat map showing relative abundance of microbes in each sample (N = 224 total identified). Each row corresponds to a unique microbe and each column corresponds to an individual sample. Note the relative abundance colorscale is in log units.



1.3 Notable microbe detected



1.4 References

Chang, F.Y., Siuti, P., Laurent, S., Williams, T., Glassey, E., Sailer, A.W., et al. (2021) Gut-inhabiting Clostridia build human GPCR ligands by conjugating neurotransmitters with diet- and human-derived fatty acids. Nat Microbiol 6: 792–805.

LS0tCnRpdGxlOiAiPGJyPiBUYXhvbm9taWMgcHJvZmlsaW5nIG9mIGJhY3RlcmlhbCBhbmQgYXJjaGFlYWwgY29tbXVuaXRpZXMgZnJvbSBzYWxpdmEgYW5kIENhcFNjYW4tc2FtcGxlZCBndXQgbWV0YWdlbm9tZXMiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCgotLS0KCjxzdHlsZT4KZGl2LmhpZ2hsaWdodCB7CmJhY2tncm91bmQtY29sb3I6ICNGMkYyRjI7CnBhZGRpbmc6IDBweDsKYm9yZGVyLXJhZGl1czogMnB4Owp9Cgo8L3N0eWxlPgoKIyMjIDxiPjxpPlN1YmplY3Q6IEdLPC9iPjwvaT4KKkVudml2byBCaW8sIEluYy47IENvbmZpZGVudGlhbCoKCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgpgYGB7ciBhZGQgbG9nbywgZWNobyA9IEZBTFNFfQpsb2dvX3BhdGggPC0gIi4uL2xvZ28vZW52aXZvLnN2ZyIKCmh0bWx0b29sczo6aW1nKHNyYyA9IGtuaXRyOjppbWFnZV91cmkobG9nb19wYXRoKSwgCiAgICAgICAgICAgICAgIGFsdCA9ICJsb2dvIiwgCiAgICAgICAgICAgICAgIHN0eWxlID0gInBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgcGFkZGluZzoxMHB4OyB3aWR0aDogMTQ1cHg7IGhlaWdodDogNDJweCIpCmBgYAoKYGBge3IgbG9hZCBwYWNrYWdlcywgaW5jbHVkZSA9IEZBTFNFfQojIExpc3QgcmVxdWlyZWQgcGFja2FnZXMKY3JhblBhY2thZ2VzIDwtIGMoIkJpb2NNYW5hZ2VyIiwgImdncGxvdDIiLCAiZHBseXIiLCAidGlkeXIiLAogICAgICAgICAgICAgICAgICAiYXBlIiwgImdncGxvdDIiLCAicmVzaGFwZTIiLCAicGxvdGx5IiwgImhlYXRtYXBseSIpCmJpb2NQYWNrYWdlcyA8LSBjKCJwaHlsb3NlcSIsICJCaW9zdHJpbmdzIikKCiMgSW5zdGFsbCBtaXNzaW5nIENSQU4gcGFja2FnZXMKaW5zdGFsbGVkQ1JBTiA8LSBjcmFuUGFja2FnZXMgJWluJSByb3duYW1lcyhpbnN0YWxsZWQucGFja2FnZXMoKSkKaWYgKGFueShpbnN0YWxsZWRDUkFOID09IEZBTFNFKSkgewogIGluc3RhbGwucGFja2FnZXMoY3JhblBhY2thZ2VzWyFpbnN0YWxsZWRDUkFOXSwKICAgICAgICAgICAgICAgICAgIHJlcG9zID0gJ2h0dHA6Ly9jcmFuLnVzLnItcHJvamVjdC5vcmcnKQp9CgojIEluc3RhbGwgbWlzc2luZyBCaW9jb25kdWN0b3IgcGFja2FnZXMKaW5zdGFsbGVkQmlvYyA8LSBiaW9jUGFja2FnZXMgJWluJSByb3duYW1lcyhpbnN0YWxsZWQucGFja2FnZXMoKSkKaWYgKGFueShpbnN0YWxsZWRCaW9jID09IEZBTFNFKSkgewogIEJpb2NNYW5hZ2VyOjppbnN0YWxsKGJpb2NQYWNrYWdlc1shaW5zdGFsbGVkQmlvY10pCn0KCiMgTG9hZCBwYWNrYWdlcwpsYXBwbHkoYyhjcmFuUGFja2FnZXMsIGJpb2NQYWNrYWdlcyksIGxpYnJhcnksIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKYGBgCgpgYGB7ciBsb2FkIGRhdGEsIGluY2x1ZGUgPSBGQUxTRX0KIyBMb2FkIENvc21vc0lEIGRhdGEgYW5kIGZvcm1hdHRlZCBtZXRhZGF0YQpjb3Ntb3MgPC0gcmVhZC5jc3YoZmlsZSA9ICIuLi9kYXRhL0NQMDQ2MThfY29zbW9zaWRfMjAyMjA5MDYuY3N2IikKbWV0YSA8LSByZWFkLmNzdihmaWxlID0gIi4uL2RhdGEvQ1AwNDYxOF9tZXRhZGF0YS5jc3YiKQpgYGAKCmBgYHtyIGZvcm1hdCBkYXRhLCBpbmNsdWRlID0gRkFMU0V9CiMgUHJlcGFyZSB0YXhfdGFibGUgYW5kIG90dV90YWJsZSBvYmplY3RzCnRheCA8LSBjb3Ntb3MgJT4lCiAgc2VsZWN0KFBoeWx1bSwgQ2xhc3MsIE9yZGVyLCBGYW1pbHksIEdlbnVzLCBTcGVjaWVzLCBTdHJhaW4pICU+JQogIGFzLm1hdHJpeCAlPiUKICB0YXhfdGFibGUKCnN0YXJ0X2luZCA8LSBncmVwKCJTdHJhaW4iLCBjb2xuYW1lcyhjb3Ntb3MpKSsxCnN0b3BfaW5kIDwtIG5jb2woY29zbW9zKS0yCmFidW5kYW5jZV9zY29yZXMgPC0gY29zbW9zWyxzdGFydF9pbmQ6c3RvcF9pbmRdICU+JSBvdHVfdGFibGUoLiwgdGF4YV9hcmVfcm93cyA9IFRSVUUpCgojIFJlZm9ybWF0IHNhbXBsZSBuYW1lcyBhbmQgbWV0YWRhdGEgc2FtcGxlIG5hbWVzIHNvIHRoZXkgbWF0Y2gKY29sbmFtZXMoYWJ1bmRhbmNlX3Njb3JlcykgPC0gY29sbmFtZXMoYWJ1bmRhbmNlX3Njb3JlcykgJT4lCiAgZ3N1YigiWCIsICIiLCAuKSAlPiUKICBnc3ViKCJfLioiLCAiIiwgLikgJT4lCiAgcGFzdGUwKCJFQl8iLCAuKQoKcm93Lm5hbWVzKG1ldGEpIDwtIG1ldGEgJT4lCiAgcHVsbChTYW1wbGVfbnVtYmVyKSAlPiUKICBwYXN0ZTAoIkVCXyIsIC4pCgpzYW1fZGF0YSA8LSBzYW1wbGVfZGF0YShtZXRhKQpgYGAKCmBgYHtyIGJ1aWxkIHBoeWxvc2VxLCBpbmNsdWRlID0gRkFMU0V9CiMgQnVpbGQgcGh5bG9zZXEgb2JqZWN0CnBzIDwtIHBoeWxvc2VxKHRheCwgYWJ1bmRhbmNlX3Njb3Jlcywgc2FtX2RhdGEpCmBgYAoKYGBge3IgdHJhbnNmb3JtIGRhdGEsIGluY2x1ZGUgPSBGQUxTRX0KIyBMb2cgdHJhbnNmb3JtCnBzTG9nIDwtIHBzICU+JSB0cmFuc2Zvcm1fc2FtcGxlX2NvdW50cyguLCBmdW5jdGlvbih4KSBsb2coeCArIDEsIGJhc2UgPSAxMCkpCgojIFJlbGF0aXZlIGFidW5kYW5jZSB0cmFuc2Zvcm0KcHNSQSA8LSBwcyAlPiUgdHJhbnNmb3JtX3NhbXBsZV9jb3VudHMoLiwgZnVuY3Rpb24oeCkgeC9zdW0oeCkqMTAwKQpgYGAKCmBgYHtyIHJhbmsgcGh5bGEsIGluY2x1ZGUgPSBGQUxTRX0KcGh5X3JhbmsgPC0gcHNSQSAlPiUKICB0YXhfZ2xvbSguLCB0YXhyYW5rID0gIlBoeWx1bSIpICU+JQogIHBzbWVsdCAlPiUKICBncm91cF9ieShQaHlsdW0pICU+JQogIHN1bW1hcmlzZShtZWRpYW4gPSBtZWRpYW4oQWJ1bmRhbmNlKSkKCnBoeV9yYW5rICU+JSBhcnJhbmdlKGRlc2MobWVkaWFuKSkKYGBgCgpgYGB7ciBzdWJqZWN0IHN1YnNldCwgaW5jbHVkZSA9IEZBTFNFfQojIFNldCBzdWJqZWN0CnN1YmplY3QgPC0gIkdLIgoKIyBTdWJzZXQgdG8gc3ViamVjdCBzYW1wbGVzIGFuZCBkcm9wIG1pc3NpbmcgdGF4YQpwc1N1YiA8LSBzdWJzZXRfc2FtcGxlcyhwcywgU3ViamVjdCA9PSBzdWJqZWN0KSAlPiUKICBwcnVuZV90YXhhKHRheGFfc3VtcyguKSA+IDAsIC4pCgojIEFkZCBwbG90IGxhYmVsIGZvciBlYWNoIHNhbXBsZQpzYW1wbGVfZGF0YShwc1N1YikkUGxvdF9sYWJlbCA8LSBwYXN0ZTAoc2FtcGxlX25hbWVzKHBzU3ViKSwgIiAoIiwgc2FtcGxlX2RhdGEocHNTdWIpJFNhbXBsZV90eXBlLCAiKSIpCgojIFJlbGF0aXZlIGFidW5kYW5jZSB0cmFuc2Zvcm0KcHNTdWJfcmEgPC0gcHNTdWIgJT4lIHRyYW5zZm9ybV9zYW1wbGVfY291bnRzKC4sIGZ1bmN0aW9uKHgpIHgvc3VtKHgpKjEwMCkKYGBgCgpgYGB7ciBwbG90IGJhciwgaW5jbHVkZSA9IEZBTFNFfQojIERlZmluZSBOT1QgSU4gb3BlcmF0b3IKJyUhaW4lJyA8LSBmdW5jdGlvbih4LHkpISgnJWluJScoeCx5KSkKCiMgQWdnbG9tZXJhdGUgYXQgR2VudXMgYW5kIG1lbHQKdGF4cmFuayA8LSAiR2VudXMiCm1lbHQgPC0gcHNTdWJfcmEgJT4lIHRheF9nbG9tKC4sIHRheHJhbmsgPSB0YXhyYW5rKSAlPiUgcHNtZWx0CgojIERlZmluZSBtYWpvciBwaHlsYQptYWpvcl9waHkgPC0gYygiRmlybWljdXRlcyIsICJBY3Rpbm9iYWN0ZXJpYSIsICJCYWN0ZXJvaWRldGVzIiwgIlByb3Rlb2JhY3RlcmlhIikKCiMgSWRlbnRpZnkgZ2VuZXJhIHByZXNlbnQgaW4gPDElIHJlbGF0aXZlIGFidW5kYW5jZSBpbiBhbGwgc2FtcGxlcwpyYXJlX2dlbmVyYSA8LSBtZWx0ICU+JQogIGdyb3VwX2J5KFNhbXBsZV9udW1iZXIsIEdlbnVzKSAlPiUKICBzdW1tYXJpemUoc3VtID0gc3VtKEFidW5kYW5jZSkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBncm91cF9ieShHZW51cykgJT4lCiAgc3VtbWFyaXplKG1heCA9IG1heChzdW0pKSAlPiUKICBmaWx0ZXIobWF4IDwgMSkgJT4lCiAgcHVsbChHZW51cykKCiMgQ3JlYXRlIG5ldyBjb2x1bW4gY29udGFpbmluZyBuYW1lIG9mIGdlbnVzIGlmIGFib3ZlIGN1dG9mZiBvciAiT3RoZXIgZ2VuZXJhIiBpZiBub3QKZGYgPC0gbWVsdCAlPiUKICBtdXRhdGUoUGh5X2dyb3VwID0gY2FzZV93aGVuKFBoeWx1bSAlIWluJSBtYWpvcl9waHkgfiAiT3RoZXIgcGh5bHVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBQaHlsdW0pLAogICAgICAgICBQaHlfZ3JvdXAgPSBjYXNlX3doZW4oR2VudXMgJWluJSByYXJlX2dlbmVyYSB+ICJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IFBoeV9ncm91cCksCiAgICAgICAgIFRheF9sYWJlbCA9IGNhc2Vfd2hlbihHZW51cyAlaW4lIHJhcmVfZ2VuZXJhIH4gIkFhT3RoZXIgZ2VuZXJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBHZW51cykpICU+JQogIGdyb3VwX2J5KFN1YmplY3QpICU+JQogIGFycmFuZ2UoU3ViamVjdCwgU2FtcGxlX3R5cGUpCgojIERlZmluZSBvcmRlcgpwaHlfb3JkZXIgPC0gYygiT3RoZXIgcGh5bHVtIiwKICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiwKICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiLAogICAgICAgICAgICAgICAiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAiRmlybWljdXRlcyIpICU+JSByZXYKCmdlbl9vcmRlciA8LSBkZiAlPiUKICBzZWxlY3QoUGh5X2dyb3VwLCBUYXhfbGFiZWwpICU+JQogIG11dGF0ZShPcmRlciA9IG1hdGNoKFBoeV9ncm91cCwgcGh5X29yZGVyKSkgJT4lCiAgYXJyYW5nZShPcmRlciwgZGVzYyhUYXhfbGFiZWwpKSAlPiUKICBkaXN0aW5jdCAlPiUKICBwdWxsKFRheF9sYWJlbCkKCmdlbl9vcmRlciA8LSBmYWN0b3IoZ3N1YigiXkFhIiwgIiIsIGdlbl9vcmRlciksIGxldmVscyA9IGdzdWIoIl5BYSIsICIiLCBnZW5fb3JkZXIpKSAjIHRoZSBBYSBpcyB0byBtYWtlIHN1cmUgIk90aGVyIiBpcyBwbG90dGVkIGF0IHRoZSB0b3AKCmRmIDwtIGRmICU+JQogIG11dGF0ZShUYXhfbGFiZWwgPSBmYWN0b3IoZ3N1YigiXkFhIiwgIiIsIFRheF9sYWJlbCksIGxldmVscyA9IGdlbl9vcmRlcikpCgojIERlZmluZSBjb2xvcnMKcGh5X2NvbG9yIDwtIGRhdGEuZnJhbWUoUGh5bHVtID0gYygiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWN0ZXJvaWRldGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiksCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VfY29sb3IgPSBjKCIjRkZCNzI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiM4MzJDRkYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIzY0QzYyQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjMDcyQUM4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiNFOTNCNEYiKSkKCnBoeV9jb2xvciA8LSBwaHlfY29sb3JbbWF0Y2gocGh5X29yZGVyLCBwaHlfY29sb3IkUGh5bHVtKSxdCgojIERhdGEgZnJhbWUgYXMgaW5wdXQsIGRhdGEgZnJhbWUgd2l0aCBuZXcgY29sdW1uIG9mIGhleCBjb2RlcyBhcyBvdXRwdXQKY29sX3BhbGV0dGUgPC0gZGYgJT4lCiAgc2VsZWN0KFBoeV9ncm91cCwgVGF4X2xhYmVsKSAlPiUKICBkaXN0aW5jdCAlPiUKICBtdXRhdGUoSGV4X2NvZGUgPSBOQSkKCgpmb3IocGh5IGluIHBoeV9jb2xvciRQaHlsdW0pIHsKICB0ZXN0IDwtIGNvbF9wYWxldHRlICU+JQogICAgZmlsdGVyKFBoeV9ncm91cCA9PSBwaHkpICU+JQogICAgcHVsbChUYXhfbGFiZWwpICU+JQogICAgZHJvcGxldmVscyAlPiUKICAgIGxldmVscwogIAogIHRheC5jb2xvciA8LSBjb2xvclJhbXBQYWxldHRlKGMocGh5X2NvbG9yJEJhc2VfY29sb3JbbWF0Y2gocGh5LCBwaHlfY29sb3IkUGh5bHVtKV0sICJ3aGl0ZSIpKQogIGNvbHRlc3QgPC0gdGF4LmNvbG9yKGxlbmd0aCh0ZXN0KSsyKSAlPiUKICAgIC5bLWxlbmd0aCguKV0KICBjb2xfcGFsZXR0ZSRIZXhfY29kZVttYXRjaCh0ZXN0LCBjb2xfcGFsZXR0ZSRUYXhfbGFiZWwpXSA8LSBjb2x0ZXN0Cn0KCmNvbF9wYWxldHRlIDwtIGNvbF9wYWxldHRlICU+JSBhcnJhbmdlKGZhY3RvcihUYXhfbGFiZWwsIGxldmVscyA9IGdlbl9vcmRlcikpCmBgYAoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMSBPdmVydmlldyBvZiBtaWNyb2JpYWwgY29tbXVuaXR5IGNvbXBvc2l0aW9uCjwvZGl2PgoKRmlndXJlIDEgaXMgYW4gaW50ZXJhY3RpdmUgZmlndXJlIHNob3dpbmcgdGhlIG1pY3JvYmlhbCBjb21tdW5pdHkgY29tcG9zaXRpb24gaW4gZWFjaCBjb2xsZWN0ZWQgc2FtcGxlLiBIZXJlLCBlYWNoIGNvbG9yIGFuZCBzaGFkZSBjb3JyZXNwb25kcyB0byBhIGRpZmZlcmVudCBnZW51cy4gRm9yIHJlZmVyZW5jZSwgZG9tZXN0aWMgZG9ncyAoKkNhbmlzIGZhbWlsaWFyaXMqKSBhbmQgZ3JheSB3b2x2ZXMgKCpDYW5pcyBsdXB1cyopIGFyZSBkaWZmZXJlbnQgc3BlY2llcyB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSBnZW51cyAoKkNhbmlzKikuCjxicj48YnI+CllvdSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGZpZ3VyZSBieToKCiogSG92ZXJpbmcgdGhlIGN1cnNvciBvdmVyIGEgY29sb3IgaW4gdGhlIHN0YWNrZWQgYmFyIHRvIHNlZSB0aGUgdGF4b25vbWljIGlkZW50aXR5LCBzYW1wbGUgdHlwZSwgYW5kIHJlbGF0aXZlIGFidW5kYW5jZSBjb3JyZXNwb25kaW5nIHRvIHRoYXQgY29sb3IgYW5kIGJhcgoqIENsaWNraW5nIGFuZCBkcmFnZ2luZyB0aGUgY3Vyc29yIG92ZXIgYSBwb3J0aW9uIG9mIHRoZSBmaWd1cmUgdG8gem9vbQoqIFNpbmdsZS1jbGlja2luZyBhIGdlbnVzJ3MgbmFtZSBpbiB0aGUgbGVnZW5kIHRvIHJlbW92ZSB0aGF0IGdlbnVzIGZyb20gdGhlIGZpZ3VyZQoqIERvdWJsZS1jbGlja2luZyAoPHU+dmVyeSBxdWlja2x5PC91PikgYSBnZW51cydzIG5hbWUgaW4gdGhlIGxlZ2VuZCB0byBvbmx5IHNob3cgdGhhdCBnZW51cwpgYGB7ciwgb3V0LndpZHRoID0gIjEwMCUiLCBlY2hvID0gRkFMU0V9CiMgUGxvdApwQmFyIDwtIHBsb3RfbHkoZGYsIHggPSB+UGxvdF9sYWJlbCwgeSA9IH5BYnVuZGFuY2UsIHR5cGUgPSAiYmFyIiwKICAgICAgICAgICAgIGNvbG9yID0gflRheF9sYWJlbCwgY29sb3JzID0gY29sX3BhbGV0dGUkSGV4X2NvZGUsCiAgICAgICAgICAgICB0ZXh0cG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICAgICB0ZXh0ID0gfnBhc3RlKCI8Yj5HZW51czo8L2I+IiwgVGF4X2xhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPjxicj4iLCAiPGI+U2FtcGxlIHR5cGU6PC9iPiIsIFNhbXBsZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPiIsICI8Yj5SZWxhdGl2ZSBhYnVuZGFuY2U6PC9iPiIsIHBhc3RlMChyb3VuZChBYnVuZGFuY2UsIGRpZ2l0cyA9IDEpLCAiJSIpKSwKICAgICAgICAgICAgIGhvdmVyaW5mbyA9ICJ0ZXh0IikgJT4lCiAgbGF5b3V0KHhheGlzID0gbGlzdCh0aXRsZSA9ICI8Yj5TYW1wbGU8L2I+IiwKICAgICAgICAgICAgICAgICAgICAgIHRpY2tzID0gIm91dHNpZGUiKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIjxiPlJlbGF0aXZlIGFidW5kYW5jZSAoJSk8L2I+IiwKICAgICAgICAgICAgICAgICAgICAgIHRpY2tzID0gIm91dHNpZGUiKSwKICAgICAgICAgYmFybW9kZSA9ICJzdGFjayIsCiAgICAgICAgIGZvbnQgPSBsaXN0KGZhbWlseSA9ICJBcmlhbCIpKQoKcEJhciR4JGxheW91dCR5YXhpcyRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBCYXIKYGBgCioqRmlndXJlIDE6KiogTWljcm9iaWFsIGNvbW11bml0eSBjb21wb3NpdGlvbiBvZiBjb2xsZWN0ZWQgc2FsaXZhIGFuZCBDYXBTY2FuIHNhbXBsZXMuIENhcFNjYW4gc2FtcGxlcyBhcmUgb3JkZXJlZCBmcm9tIHByb3hpbWFsIHRvIGRpc3RhbCBpbnRlc3RpbmUgKCppKi4qZSouLCBpbmNyZWFzaW5nIGRpc3RhbmNlIGZyb20gbW91dGgpLiBUYXhvbm9taWMgY29tcG9zaXRpb24gaXMgcmVwb3J0ZWQgYXQgdGhlIGdlbnVzIHJhbmsuIEdlbmVyYSBwcmVzZW50IGF0IDwxJSByZWxhdGl2ZSBhYnVuZGFuY2UgYWNyb3NzIGFsbCBzYW1wbGVzIGFyZSByZXBvcnRlZCBhcyAiT3RoZXIgZ2VuZXJhIi4gPHU+Tm90ZTo8L3U+IEJsdWUgPSAqRmlybWljdXRlcyo7IFllbGxvdyA9ICpBY3Rpbm9teWNldGVzKjsgR3JlZW4gPSAqQmFjdGVyb2lkZXRlcyo7IFJlZCA9ICpQcm90ZW9iYWN0ZXJpYSo7IFB1cnBsZSA9IGFsbCBvdGhlciBwaHlsYS4gU2hhZGVzIG9mIHRoZSBzYW1lIGNvbG9yIChleGNlcHQgcHVycGxlKSBjb3JyZXNwb25kIHRvIGRpZmZlcmVudCBnZW5lcmEgZnJvbSB0aGUgc2FtZSBwaHlsdW0uCgpgYGB7ciwgaW5jbHVkZSA9IEZBTFNFfQojIE9yZGluYXRpb24tYmFzZWQKI3BIZWF0X29yZCA8LSBwbG90X2hlYXRtYXAocHNTdWJfcmEsIG1ldGhvZCA9ICJOTURTIiwgZGlzdGFuY2UgPSAiYnJheSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGEubGFiZWwgPSAiU3RyYWluIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LmxhYmVsID0gMzAwKQojCiMgUmV0cmlldmUgcm93IGFuZCB0YXhvbiBvcmRlcnMKI3Jvd19vcmRlciA8LSBwSGVhdF9vcmQkcGxvdF9lbnYkdGF4YS5vcmRlciAlPiUgcmV2CiN0YXhfb3JkZXIgPC0gdGF4X3RhYmxlKHBzU3ViX3JhKVttYXRjaChyb3dfb3JkZXIsIHJvd25hbWVzKHRheF90YWJsZShwc1N1Yl9yYSkpKSxdICU+JQojICBhcy5kYXRhLmZyYW1lICU+JQojICBtdXRhdGUodGF4b24gPSByb3duYW1lcyguKSwKIyAgICAgICAgIEFidW5kYW5jZSA9IDEsCiMgICAgICAgICBTYW1wbGUgPSBzdWJqZWN0KQojIE9yZGVyIGJ5IHJlbGF0aXZlIGFidW5kYW5jZSB3aXRoaW4gc2FtcGxlcwpyb3dfb3JkZXIgPC0gb3R1X3RhYmxlKHBzU3ViX3JhKSAlPiUKICBhcy5kYXRhLmZyYW1lICU+JQogIGFycmFuZ2UoRUJfMjU5LCBFQl8yNjAKICAgICAgICAgICkgJT4lCiAgcm93bmFtZXMKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IEZBTFNFfQojIFByZXBhcmUgZGF0YQp4IDwtIHBzU3ViX3JhICU+JSBvdHVfdGFibGUgJT4lIGFzLmRhdGEuZnJhbWUKY29sbmFtZXMoeCkgPC0gbGFwcGx5KGNvbG5hbWVzKHgpLCBncmVwLCBzYW1wbGVfZGF0YShwc1N1Yl9yYSkkUGxvdF9sYWJlbCwgdmFsdWUgPSBUUlVFKSAlPiUgdW5saXN0CgojIEFkZCB0YXhvbm9teQp4IDwtIGNiaW5kKHgsIHRheF90YWJsZShwc1N1Yl9yYSkpCgojIFJlb3JkZXIgcm93cyBhbmQgY29sdW1ucyB0byBtYXRjaCBvcmRpbmF0aW9uCnggPC0geFttYXRjaChyb3dfb3JkZXIsIHJvd25hbWVzKHgpKSxdCgojIFNldCBob3ZlcnRleHQKbnNhbXAgPC0gbnNhbXBsZXMocHNTdWJfcmEpCmhvdmVyX3N0cmFpbiA8LSB4WywgMTpuc2FtcF0KaG92ZXJfc3RyYWluW10gPC0gcGFzdGUwKCI8Yj5NaWNyb2JlOjwvYj4gIiwgeCRTdHJhaW4sICJcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiPGI+UmVsYXRpdmUgYWJ1bmRhbmNlOjwvYj4gIikKaG92ZXJfc3RyYWluIDwtIGFzLm1hdHJpeChob3Zlcl9zdHJhaW4pCgpob3Zlcl9hYnVuZCA8LSB4WywgMTpuc2FtcF0gJT4lIHJvdW5kKC4sIGRpZ2l0cyA9IDIpICU+JSBhcy5kYXRhLmZyYW1lCmhvdmVyX2FidW5kIDwtIGFwcGx5KGhvdmVyX2FidW5kLCAyLCBwYXN0ZTAsICIlIikKaG92ZXJfYWJ1bmQgPC0gYXMubWF0cml4KGhvdmVyX2FidW5kKQoKaG92ZXJfdGF4IDwtIHhbLCAxOm5zYW1wXQpob3Zlcl90YXhbXSA8LSBwYXN0ZTAoIlxuIFxuPGI+UGh5bHVtOjwvYj4gIiwgeCRQaHlsdW0sICJcbiIsCiAgICAgICAgICAgICAgICAgICAiPGI+Q2xhc3M6PC9iPiAiLCB4JENsYXNzLCAiXG4iLAogICAgICAgICAgICAgICAgICAgIjxiPk9yZGVyOjwvYj4gIiwgeCRPcmRlciwgIlxuIiwKICAgICAgICAgICAgICAgICAgICI8Yj5GYW1pbHk6PC9iPiAiLCB4JEZhbWlseSwgIlxuIiwKICAgICAgICAgICAgICAgICAgICI8Yj5HZW51czo8L2I+ICIsIHgkR2VudXMsICJcbiIpCmhvdmVyX3RheCA8LSBhcy5tYXRyaXgoaG92ZXJfdGF4KQoKaG92ZXJ0ZXh0IDwtIG1hdHJpeChwYXN0ZTAoaG92ZXJfc3RyYWluLCBob3Zlcl9hYnVuZCwgaG92ZXJfdGF4KSwKICAgICAgICAgICAgICAgIG5yb3cgPSBucm93KGhvdmVyX3RheCksIG5jb2wgPSBuY29sKGhvdmVyX3RheCkpCgojIFBlcmZvcm0gbG9nMTAgdHJhbnNmb3JtYXRpb24gb24gcmVsYXRpdmUgYWJ1bmRhbmNlcwpkYXRhIDwtIGxvZyh4WywgMTpuc2FtcF0sIGJhc2UgPSAxMCkKZGF0YVtzYXBwbHkoZGF0YSwgaXMuaW5maW5pdGUpXSA8LSBOQQpgYGAKPGJyPjxicj4KCjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+CiMjIyAxLjIgSGlnaC1yZXNvbHV0aW9uIHNuYXBzaG90IG9mIGNvbW11bml0eSBjb21wb3NpdGlvbgo8L2Rpdj4KRmlndXJlIDIgaXMgYW4gaW50ZXJhY3RpdmUgZmlndXJlIHNob3dpbmcgdGhlIG1pY3JvYmlhbCBjb21tdW5pdHkgY29tcG9zaXRpb24gYXQgaGlnaGVyIHRheG9ub25vbWljIHJlc29sdXRpb24uIEhlcmUsIGVhY2ggcm93IGNvcnJlc3BvbmRzIHRvIGEgdW5pcXVlIG1pY3JvYmUuCjxicj48YnI+CllvdSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGZpZ3VyZSBieToKCiogSG92ZXJpbmcgdGhlIGN1cnNvciBvdmVyIGEgY2VsbCB0byBzZWUgdGhhdCBtaWNyb2JlJ3MgZ2VudXMgYW5kIHNwZWNpZXMgKGFuZCBzdHJhaW4gd2hlbiBhdmFpbGFibGUpLCByZWxhdGl2ZSBhYnVuZGFuY2UsIGFuZCBmdWxsIHRheG9ub21pYyBjbGFzc2lmaWNhdGlvbgoqIENsaWNraW5nIGFuZCBkcmFnZ2luZyB0aGUgY3Vyc29yIG92ZXIgYSBwb3J0aW9uIG9mIHRoZSBmaWd1cmUgdG8gem9vbQoKPGJyPjxicj4KYGBge3IsIG91dC5oZWlnaHQgPSAiNzUwcHgiLCBlY2hvID0gRkFMU0V9CiMgU2V0IHNhbXBsZSBuYW1lcwojY29sbmFtZXMoZGF0YSkgPC0gYygiRUJfMjY5IChzYWxpdmEpIiwgIkVCXzI3MCAoQ2FwU2NhbikiLCAiRUJfMjcxIChDYXBTY2FuKSIsCiMgICAgICAgICAgICAgICAgICAgICJFQl8yNzIgKENhcFNjYW4pIiwgIkVCXzI3MyAoQ2FwU2NhbikiLCAiRUJfMjc0IChzdG9vbCkiKQoKIyBQcmVwYXJlIHRheG9ub215IHJvdyBzaWRlCnJvd19zaWRlIDwtIHggJT4lIHNlbGVjdChQaHlsdW0pCnJvd19zaWRlJFBoeWx1bVtyb3dfc2lkZSRQaHlsdW0gJSFpbiUgbWFqb3JfcGh5XSA8LSAiT3RoZXIgcGh5bGEiCnJvd19zaWRlJFBoeWx1bSA8LSBmYWN0b3Iocm93X3NpZGUkUGh5bHVtLCBsZXZlbHMgPSBjKCJPdGhlciBwaHlsYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcm90ZW9iYWN0ZXJpYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWN0ZXJvaWRldGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGlub2JhY3RlcmlhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpcm1pY3V0ZXMiKSkKCiMgUGxvdApwSGVhdCA8LSBoZWF0bWFwbHkoZGF0YSwKICAgICAgICAgICAgICAgICAgIFJvd3YgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgIENvbHYgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IHZpcmlkaXM6OnZpcmlkaXMoMTApLAogICAgICAgICAgICAgICAgICAgcm93X3NpZGVfY29sb3JzID0gcm93X3NpZGUsCiAgICAgICAgICAgICAgICAgICByb3dfc2lkZV9wYWxldHRlID0gYygiQWN0aW5vYmFjdGVyaWEiID0gIiNGRkI3MjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiID0gIiM2NEM2MkEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpcm1pY3V0ZXMiID0gIiMwNzJBQzgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiA9ICIjRTkzQjRGIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciBwaHlsYSIgPSAiIzgzMkNGRiIpLAogICAgICAgICAgICAgICAgICAgc3VicGxvdF9tYXJnaW4gPSAwLjAxLAogICAgICAgICAgICAgICAgICAgc3VicGxvdF93aWR0aHMgPSBjKDAuOSwgMC4wNyksCiAgICAgICAgICAgICAgICAgICBzaWRlX2NvbG9yX2NvbG9yYmFyX2xlbiA9IDAuMywKICAgICAgICAgICAgICAgICAgIHBsb3RfbWV0aG9kID0gInBsb3RseSIsCiAgICAgICAgICAgICAgICAgICBjdXN0b21faG92ZXJ0ZXh0ID0gaG92ZXJ0ZXh0LAogICAgICAgICAgICAgICAgICAgeGxhYiA9ICI8Yj5TYW1wbGU8L2I+IiwKICAgICAgICAgICAgICAgICAgIHlsYWIgPSAiPGI+TWljcm9iZTwvYj4iLAogICAgICAgICAgICAgICAgICAgY29sb3JiYXJfeHBvcyA9IDEuMDE5LAogICAgICAgICAgICAgICAgICAgY29sb3JiYXJfeXBvcyA9IDAuNSwKICAgICAgICAgICAgICAgICAgIGNvbG9yYmFyX2xlbiA9IDAuMykgJT4lCiAgbGF5b3V0KHhheGlzID0gbGlzdChzaG93Z3JpZCA9IEZBTFNFKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHNob3dncmlkID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICBzaG93dGlja2xhYmVscyA9IEZBTFNFKSwKICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gIkFyaWFsIikpICU+JQogIGNvbG9yYmFyKHRpdGxlID0gIlJlbGF0aXZlIGFidW5kYW5jZSIsCiAgICAgICAgICAgdGlja3ZhbHMgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICB0aWNrdGV4dCA9IGMoIjAuMSUiLCAiMSUiLCAiMTAlIikpCgojIEZvcm1hdCByb3cgc2lkZQpwSGVhdCR4JGxheW91dCR4YXhpczIkdGlja3RleHQgPC0gIlBoeWx1bSIKcEhlYXQkeCRsYXlvdXQkeGF4aXMkbGluZWNvbG9yIDwtICIjMDAwMDAwIgpwSGVhdCR4JGxheW91dCR4YXhpczIkbGluZWNvbG9yIDwtICIjMDAwMDAwIgpwSGVhdCR4JGxheW91dCR5YXhpcyRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBIZWF0JHgkbGF5b3V0JGxlZ2VuZCR5YW5jaG9yIDwtICJib3R0b20iCnBIZWF0CmBgYAoqKkZpZ3VyZSAyOioqIEhlYXQgbWFwIHNob3dpbmcgcmVsYXRpdmUgYWJ1bmRhbmNlIG9mIG1pY3JvYmVzIGluIGVhY2ggc2FtcGxlIChOID0gMjI0IHRvdGFsIGlkZW50aWZpZWQpLiBFYWNoIHJvdyBjb3JyZXNwb25kcyB0byBhIHVuaXF1ZSBtaWNyb2JlIGFuZCBlYWNoIGNvbHVtbiBjb3JyZXNwb25kcyB0byBhbiBpbmRpdmlkdWFsIHNhbXBsZS4gTm90ZSB0aGUgcmVsYXRpdmUgYWJ1bmRhbmNlIGNvbG9yc2NhbGUgaXMgaW4gbG9nIHVuaXRzLgoKPGJyPjxicj4KCjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+CiMjIyAxLjMgTm90YWJsZSBtaWNyb2JlIGRldGVjdGVkCjwvZGl2PgoKKiAqRXViYWN0ZXJpdW0gcmVjdGFsZSo6CiAgKiBSZWNlbnRseSBzaG93biB0byBwcm9kdWNlIGEgbW9sZWN1bGUgKGxhdXJveWwgdHJ5cHRhbWluZSkgdGhhdCBzdHJ1Y3R1cmFsbHkgbWltaWNzIGEgc2lnbmFsaW5nIG1vbGVjdWxlIHByb2R1Y2VkIGJ5IGh1bWFuczsgbGF1cm95bCB0cnlwdGFtaW5lIGluaGliaXRzIGEgaHVtYW4gcHJvdGVpbiBpbnZvbHZlZCBpbiB0cmlnZ2VyaW5nIGFuIGltbXVuZSByZXNwb25zZSBhbmQgaW5mbGFtbWF0aW9uIChDaGFuZyAqZXQgYWwqLiwgMjAyMSkKICAqIE1vc3QgcmVsYXRpdmVseSBhYnVuZGFudCBtaWNyb2JlIGluIENhcFNjYW4gc2FtcGxlICh+MTElKQogIAo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuNCBSZWZlcmVuY2VzCjwvZGl2PgoKQ2hhbmcsIEYuWS4sIFNpdXRpLCBQLiwgTGF1cmVudCwgUy4sIFdpbGxpYW1zLCBULiwgR2xhc3NleSwgRS4sIFNhaWxlciwgQS5XLiwgKmV0IGFsKi4gKDIwMjEpIEd1dC1pbmhhYml0aW5nIENsb3N0cmlkaWEgYnVpbGQgaHVtYW4gR1BDUiBsaWdhbmRzIGJ5IGNvbmp1Z2F0aW5nIG5ldXJvdHJhbnNtaXR0ZXJzIHdpdGggZGlldC0gYW5kIGh1bWFuLWRlcml2ZWQgZmF0dHkgYWNpZHMuICpOYXQgTWljcm9iaW9sKiA2OiA3OTLigJM4MDUu